#ifndef __MOTOR_DEF_H
#define __MOTOR_DEF_H

// 本设备的电机数量
#define FFB_MOTORS              1
#define PLATEFORM_MOTORS        2
#define TOTAL_MOTORS            (FFB_MOTORS+PLATEFORM_MOTORS)
#define CANOPEN_MOTOR_1_NODEID  0x01            // FFB轴
#define CANOPEN_MOTOR_2_NODEID  0x02            //
#define CANOPEN_MOTOR_3_NODEID  0x03            //

//#define INOVANCE_SV600          // 汇川SV600系列
#define STABLECU_FT2

#if defined(RIDING_HS3205)
#define DECODER_BITS                17                  // 17位的编码器
#define ELECTRONIC_GEAR_NUMERATOR   4                   // 电子齿轮分子 电子齿轮需要设置为4/1
#define ELECTRONIC_GEAR_DINOMINATOR 1                   // 电子齿轮分母
#define MOTOR_PPR                   32767
#define MOTOR_RPM(n)                (n*MOTOR_PPR/60)
#elif defined(INOVANCE_SV600)
#define DECODER_BITS                14
#define ELECTRONIC_GEAR_NUMERATOR   16384               // 电子齿轮分子
#define ELECTRONIC_GEAR_DINOMINATOR 8192                // 电子齿轮分母
#define MOTOR_PPR                   8192                // MOTOR_PPR = 16384/(ELECTRONIC_GEAR_NUMERATOR/ELECTRONIC_GEAR_DINOMINATOR)
#define MOTOR_RPM(n)                (n*MOTOR_PPR/60)    // 汇川14位编码器，考虑电子齿轮后的一圈脉冲是8192
#define MOTOR_RATED_RPM             3000                // 额定转速3000
#elif defined(STABLECU_FT2)
#define DECODER_BITS                17
#define ELECTRONIC_GEAR_NUMERATOR   16                  // 电子齿轮分子
#define ELECTRONIC_GEAR_DINOMINATOR 1                   // 电子齿轮分母
#define MOTOR_PPR                   8192                // MOTOR_PPR = 2^17/16
#define MOTOR_RPM(n)                (n*10)              // 单位是0.1rpm
#define MOTOR_RATED_RPM             3000                // 额定转速3000
#endif      //RIDING_HS3205



// FFB部分
#define FFB_MOTOR_PPR                       0x20000
#define FFB_ELECTRONIC_GEAR_NUMERATOR       1
#define FFB_ELECTRONIC_GEAR_DINOMINATOR     1
#define FFB_MOTOR_VEL_FAST                  MOTOR_RPM(8)
#define FFB_MOTOR_PULSE_FAST                (FFB_MOTOR_PPR*4)           // 2圈
#define FFB_MOTOR_VEL_SLOW                  MOTOR_RPM(1.5)
#define FFB_MOTOR_PULSE_SLOW                (-FFB_MOTOR_PPR*0.25)       // 反向
#define FFB_MOTOR_VEL_STOP                  MOTOR_RPM(1)
#define FFB_SPEED_MAX                       MOTOR_RPM(120)
#define FFB_SPEED_DEFAULT                   MOTOR_RPM(15)
#define TORQUE_DEAD_BAND                    0x0A                        // 鼎申的1.5KW电机，力矩模式0x1E才能克服自身阻力

// 动感1部分
#define SHAKE1_MOTOR_PPR                    0x2000
#define SHAKE1_GEAR_RATIO                   40
#define SHAKE1_RPM(n)                       MOTOR_RPM(n)*SHAKE1_GEAR_RATIO
#define SHAKE1_PPR                          SHAKE1_MOTOR_PPR*SHAKE1_GEAR_RATIO
#define SHAKE1_ELECTRONIC_GEAR_NUMERATOR    16
#define SHAKE1_ELECTRONIC_GEAR_DINOMINATOR  1
#define SHAKE1_VEL_FAST                     SHAKE1_RPM(5)
#define SHAKE1_PULSE_FAST                   (SHAKE1_PPR*2)           // 2圈
#define SHAKE1_VEL_SLOW                     SHAKE1_RPM(1)
#define SHAKE1_PULSE_SLOW                   (-SHAKE1_PPR*0.3)       // 反向
#define SHAKE1_VEL_STOP                     SHAKE1_RPM(1)
#define SHAKE1_VEL_RATED                    SHAKE1_RPM(2000)

// 动感2部分
#define SHAKE2_MOTOR_PPR                    0x2000
#define SHAKE2_GEAR_RATIO                   40
#define SHAKE2_RPM(n)                       MOTOR_RPM(n)*SHAKE2_GEAR_RATIO
#define SHAKE2_PPR                          SHAKE1_MOTOR_PPR*SHAKE2_GEAR_RATIO
#define SHAKE2_ELECTRONIC_GEAR_NUMERATOR    16
#define SHAKE2_ELECTRONIC_GEAR_DINOMINATOR  1
#define SHAKE2_VEL_FAST                     SHAKE2_RPM(8)
#define SHAKE2_PULSE_FAST                   (SHAKE2_PPR*2)           // 2圈
#define SHAKE2_VEL_SLOW                     SHAKE2_RPM(1.5)
#define SHAKE2_PULSE_SLOW                   (-SHAKE2_PPR*0.25)       // 反向
#define SHAKE2_VEL_STOP                     SHAKE2_RPM(1)
#define SHAKE2_VEL_RATED                    SHAKE2_RPM(2000)

typedef enum{
    BHS_IDLE,
    BHS_SUCCESS,
    BHS_FAILED,
    BHS_START,          // 触发回零
    BHS_MOVE,           // 回零中
    BHS_FAST,           // 正向快速
    BHS_SLOW,           // 反向低速
}motor_home_status_t;

#endif



